
    /*
     * Implementing your own custom object is easy. In the example below
     * an object literal is supplied to define a property named field, and named 
     * functions are used to define one accessor method ('get') and one
     * mutator method ('set')
     */
    
    Class.implement
    (
        {
            field: null   
        }
    
    ,   function setField (value) 
        {
            this.field= value;
        }
        
    ,   function getField () 
        {
            return this.field;
        }
    );
    
    function Class () {;};

    
    /*
     * If we want to override a method using implement, we must first flag
     * the preventOverride property to true. As you can see, we can still
     * invoke the subclassed objects superclass methods via the parent
     * property
     */

    Specialized.implement.preventOverride= false; // disable override protection
    
    Specialized.inherit(Class).implement
    (
        
        function setField (value) 
        {
            if (null != this.field)
                throw new Error ('Field already set');
            
            if (false === Number.type(value))
                throw new TypeError ('Field value must be a number');
            
            // invoke the superclasses setField method    
            this.parent.setField.call(this, value);
        }
    );
    
    function Specialized (fieldValue) 
    {
        Class.call(this, fieldValue);
    };
